local cjson = require('cjson');

ngx.say([[
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
</head>
]])

function printTab(tb)
    for k,v in pairs(tb) do
        ngx.say(k,'=', v, '<br/>')
    end
end

-- ngx 内部有一个名为var的变量，里面记录了nginx指令中声明的变量
-- 例如，获取名为a的变量：ngx.var.a
ngx.say("<h1> ===获取路径占位符变量=== </h1>")
ngx.say('<h4> a = '.. ngx.var.a .. '</h4>');
ngx.say('<h4> b = '.. ngx.var.b .. '</h4>');
ngx.say('<h4> ngx.var[1] = '.. ngx.var[1] .. '</h4>');
ngx.say('<h4> ngx.var[2] = '.. ngx.var[2] .. '</h4>');



-- 获取get请求参数 ngx.req.get_uri_args()
ngx.say("<h1> ===获取GET请求变量=== </h1>")
local getArgs = ngx.req.get_uri_args()
ngx.say("<h4>")
printTab(getArgs)
ngx.say("</h4>")


-- 获取POST请求参数 ngx.req.get_post_args()
-- ngx.say("<h1> ===获取POST请求变量=== </h1>")
-- ngx.req.read_body()
-- local postArgs = ngx.req.get_post_args()
-- ngx.say("<h4>")
-- printTab(postArgs)
-- ngx.say("</h4>")



-- 获取POST请求参数 ngx.req.get_body_data()
ngx.say("<h1> ===获取JSON请求变量=== </h1>")
ngx.req.read_body()
-- JSON
local bodyData = ngx.req.get_body_data();
-- JSON 转table
local tb = cjson.decode(bodyData);
-- tbale转JSON
local json = cjson.encode(tb);
printTab(tb)
-- 转Table
ngx.say("<h4>")
ngx.say(json)
ngx.say("</h4>")
ngx.say('</html>')